﻿using MovingChame.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MovingChame.Web.Infrastructure
{
    interface IConcreteTourProvider
    {
        /* return the latest ConcreteTour of AbstractTour 
         * All the GetToursBySth(parameter) has parameter of abstractTour
         */

        int AddConcreteTour(DateTime startDate, DateTime endDate, int abstractTourId);

        Boolean UpdateConcreteTour(int concreteTourId, ConcreteTour updatedConcreteTour);

        Boolean UpdateConcreteTourStatus(int concreteTourId, TourStatus status);

        Boolean RemoveConcreteTour(int concreteTourId);

        ConcreteTour GetConcreteTourById(int concreteTourId);

        ConcreteTour GetLatestConcreteTourByAbstractTour(int abstractTourId);

        IQueryable<ConcreteTour> GetConcreteTourByAbstractTour(int abstractTourId);

        AbstractTour GetAbstractTourByConcreteTour(int concreteTourId);
    }
}
